//
//  TempWidgetExt.swift
//  ANOA
//
//  Created by 邱仙凯 on 2025/1/22.
//  Copyright © 2025 zwb. All rights reserved.
//

// 模板生成控件(常规的组件，特殊的就不在这里处理)
func temp2Component(_ temp: TemplateModel, auCombine: AuditParamCombine?, segArr: [String] = [], excuteType: OperateType) -> KSFormBaseItem {
   
    if temp.field_type == TemplateType.note.rawValue {//文字提醒类型
        // 手动计算文本高度
        let hhh = tempSpCountHeight(temp.default_value.unwrap)
        let appe = KSFormHAppear()
            .tipStr(temp.default_value.unwrap,tipColor: temp.field_colour)
            .contentHight(hhh)
        var v:KSFormBaseItem!
       
             v = KSFormHItem(title: "",appearance:appe,type:.tempTip )
    
        
        
        v.tagx = temp.field_nm.unwrap
        return v
        
    } else {
        
        
        let preFer = itemPreferance(temp: temp)
        
        
        var v:KSFormBaseItem!
        if temp.field_type == TemplateType.radio.rawValue { // 开关型
            v = KSSwitchItem(title: preFer.0,appearance:preFer.1 )
        } else if temp.field_type == TemplateType.map.rawValue {
            
            v = KSMapItem(appearance:preFer.1 )
        } else if temp.field_type == TemplateType.slidingblock.rawValue {
            v = KSBlockItem(title: preFer.0,appearance:preFer.1 )
            (v as! KSBlockItem).setBlockTitles(temp.selectDataArr)
            
        }  else if temp.field_type == TemplateType.btnevent.rawValue ||
                    temp.field_type == TemplateType.btnevent_lov.rawValue ||
                    temp.field_type == TemplateType.btnevent_exec.rawValue ||
                    temp.field_type == TemplateType.invoice.rawValue {
            v = KSBtnItem(title: preFer.0,appearance:preFer.1 )
        }  else {
            
    
            if temp.field_type == TemplateType.editlov.rawValue {
                preFer.1.isEditAndActionBoth = true
//                preFer.1.contentTrailing += 10
            }
       
            if judgeUseVWidge(temp) {
                v = KSFormVItem(title: preFer.0,appearance:preFer.1,type: preFer.2)
           
            } else {
                v = KSFormHItem(title: preFer.0,appearance:preFer.1,type: preFer.2)
            }
           
        }
        if temp.field_colour.unwrap != "" {
            v.setTempTitle(preFer.0,color: UIColor(kshex:temp.field_colour.unwrap ))
        }
        
        v.disabled = !isEnableJ(temp,auCombine: auCombine, exType: excuteType)
        v.tagx = temp.field_nm.unwrap
        
        
        return v
    }
    
}
// 高度超过 或者 标题 太长  启用竖向控件
func judgeUseVWidge(_ temp:TemplateModel) -> Bool {
  return  doubleTran(temp.field_height) > ItemHHeight
}

// 主细表共用的 构建 控件方法    （名称，偏好持有，文本框类型）  *配置菜单高度流程*
func itemPreferance(temp:TemplateModel) -> (String,KSFormBaseAppear,KType) {
    
    
    var appe: KSFormBaseAppear!
    if judgeUseVWidge(temp) {
        appe = KSFormVAppear()
        
        var vH = doubleTran(temp.field_height)
        // 不低于最小的竖向 高度
        if vH < ItemVHeight {
            vH = ItemVHeight
        }
        
        appe.contentHight(vH)
        appe.textBgColor = .white

    } else {
        appe = KSFormHAppear()
    }
    
    appe.disableStyleContentGray = true
    // 名称及必填
    var itemName = temp.field_annotation.unwrap
    if temp.is_required == "1" {
        itemName += "*"
    }
    
    // 输入限制
    if temp.field_type == TemplateType.number.rawValue ||
        temp.field_type == TemplateType.number2.rawValue {
        appe.twoDemiInput(true)
    }
    if temp.field_type == TemplateType.integer.rawValue  {
        appe.integerInput(true)
    }
    
    
    // 提示文本
    if temp.field_type == TemplateType.btnevent.rawValue ||
        temp.field_type == TemplateType.btnevent_lov.rawValue ||
        temp.field_type == TemplateType.btnevent_exec.rawValue {
        appe.placeholder = ""
    }
    // 提示文本
    if temp.placeholder.unwrap != "" {
        appe.placeholder = temp.placeholder
    }
    
    // 文本框类型
    var tttype:KType!
    if temp.field_type == TemplateType.map.rawValue {
        appe.contentHight(150)
        tttype = .map
    } else {
        appe.contentHight(temp.oneHeight)
        tttype = .tempTextView
        // 都用 tempTextView 其实也可以好像，更灵活，带背景
    }
    
    
   
    
    
    
    
    return (itemName,appe,tttype)
}
